package de.mbenning.fsim;

import java.util.Date;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import de.mbenning.fsim.domain.Kontinent;
import de.mbenning.fsim.domain.Land;
import de.mbenning.fsim.domain.Liga;
import de.mbenning.fsim.domain.Position;
import de.mbenning.fsim.domain.Saison;
import de.mbenning.fsim.domain.Spieler;
import de.mbenning.fsim.domain.Verein;
import de.mbenning.fsim.persistence.dao.MainDAO;
import de.mbenning.fsim.persistence.dao.SpielerDAO;
import de.mbenning.fsim.persistence.dao.VereinDAO;
import de.mbenning.fsim.persistence.dao.interfaces.IMainDAO;
import de.mbenning.fsim.persistence.dao.interfaces.ISpielerDAO;
import de.mbenning.fsim.persistence.dao.interfaces.IVereinDAO;

public class ExampleMain {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		ApplicationContext ctx = new ClassPathXmlApplicationContext("fsim-persistence.xml");
		IMainDAO mainDAO = (MainDAO)ctx.getBean("mainDAO");
		IVereinDAO vereinDAO = (VereinDAO)ctx.getBean("vereinDAO");
		ISpielerDAO spielerDAO = (SpielerDAO)ctx.getBean("spielerDAO");
		
		Kontinent k = new Kontinent("Europa");
		mainDAO.store(k);
//		Kontinent k = mainDAO.getKontinentByName("Europa");
		
		Land l = new Land("Deutschland");
		l.setKontinent(k);
		mainDAO.store(l);
//		Land l = mainDAO.getLandByName("Deutschland");
		
		Liga liga = new Liga();
        liga.setName("1. Bundesliga");
        liga.setLand(mainDAO.getLandByName("Deutschland"));
        liga.setAnzahlVereine(18);
        
        Saison saison = new Saison();
        //saison.setLiga(liga);
        saison.setSpielzeit("2010/2011");
		
        mainDAO.store(saison);
        mainDAO.store(liga);
//		Liga liga = mainDAO.getLigaByName("Bundesliga");
		
		
		Verein verein = new Verein();
		verein.setName("Borussia Dortmund");
		verein.setLiga(mainDAO.getLigaByName("1. Bundesliga"));
		
//		Verein verein = vereinDAO.getVereinByName("Borussia Dortmund");
		
		Spieler spieler = new Spieler();
		spieler.setName("Owomoyela");
		spieler.setVorname("Patrick");
		spieler.setGeburtstag(new Date());
		spieler.setGeburtsort("Hamburg");
		spieler.setLand(l);
		spieler.setStaatsbuergerschaft(l);
		spieler.setVerein(verein);
		spieler.setPosition(Position.ABW);
		mainDAO.store(spieler);
		
		verein.getSpieler().add(spieler);
		mainDAO.store(verein);

//		Spieler spieler = new Spieler();
//		spieler = new Spieler();
//		spieler.setName("Weidenfeller");
//		spieler.setVorname("Roman");
//		spieler.setGeburtstag(new Date());
//		spieler.setGeburtsort("Kaiserslautern");
//		spieler.setLand(l);
//		spieler.setStaatsbuergerschaft(l);
//		spieler.setVerein(verein);
//		mainDAO.store(spieler);
//		
//		verein.getSpieler().add(spieler);
//		
//		mainDAO.store(verein);
		
//		mainDAO.delete(spielerDAO.getSpielerByName("Owomoyela", "Patrick"));
//		mainDAO.delete(spielerDAO.getSpielerByName("Ziegler", "Marc"));
//		mainDAO.delete(spielerDAO.getSpielerByName("Weidenfeller", "Roman"));
		
//		System.out.println(" ** " + spieler.getVerein().getName());
		
		for(Spieler s : verein.getSpieler()) {
			System.out.println(" * " + s.getName());
		}
		
	}

}
